/* Software License Agreement
 *
 *     Copyright(C) 1994-2020 David Lindauer, (LADSoft)
 *
 *     This file is part of the Orange C Compiler package.
 *
 *     The Orange C Compiler package is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 *
 *     The Orange C Compiler package is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with Orange C.  If not, see <http://www.gnu.org/licenses/>.
 *
 *     contact information:
 *         email: TouchStone222@runbox.com <David Lindauer>
 *
 */

#include "SymbolTable.h"

SymbolTable::~SymbolTable() {}
void SymbolTable::Add(Symbol* symbol)
{
    hashTable[symbol->GetName()] = symbol;
    std::unique_ptr<Symbol> temp(symbol);
    symList.push_back(std::move(temp));
}
void SymbolTable::Remove(Symbol* symbol)
{
    auto it = hashTable.find(symbol->GetName());
    if (it != hashTable.end())
    {
        hashTable.erase(it);
        for (auto it = symList.begin(); it != symList.end(); ++it)
        {
            if ((*it).get() == symbol)
            {
                symList.erase(it);
                break;
            }
        }
    }
}
